package com.linkgie.galaxyframework.data;


/**
 * 版本对象；
 * <p>
 * 
 * 对此数据对象的每一次修改都会使版本号增加 1 ，并且当修改时版本号不匹配最新的版本号会引发异常；<p>
 * 
 * 实现此接口可以数据修改过程得到“乐观锁”控制，从而保证数据对象不会被并发修改而导致结果无法预期；
 * 
 * @author huanghaiquan
 *
 */
public interface VersionedObject {
	
	/**
	 * 数据版本；<p>
	 * 
	 * 对数据对象的每一次修改都会使版本号增加 1 ，并且当修改时版本号不匹配最新的版本号会引发异常；<p>
	 * 
	 * 数据版本从 0 开始；<p>
	 * 
	 * 当数据的版本为 0 时，会被视为新记录，对数据执行 save 操作实际会转向执行 insert 操作；
	 * 
	 * 
	 * @return
	 */
	long getDataVersion();
	
}
